package cn.iocoder.yudao.module.enterprise.controller.admin.report.vo;

import cn.iocoder.yudao.module.enterprise.dal.dataobject.reductionscene.ReductionSceneDO;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import lombok.ToString;

import java.util.List;
import java.util.Map;

@Schema(description = "管理后台 - 核算报告导出 Response VO")
@Data
@ToString(callSuper = true)
public class ReportExportRespVO {

    /**
     * 报告编制时间
     */
    private String reportTime;

    /**
     * 组织名
     */
    private String organizationName;
    /**
     * 组织简介
     */
    private String organizationProfile;
    /**
     * 组织注册地址
     */
    private String organizationRegisteredAddr;
    /**
     * 组织生产经营地址
     */
    private String organizationBizAddr;

    /**
     * 组织边界方法
     */
    private String boundaryMethod;
    /**
     * 组织边界设定
     */
    private String boundaryDesc;
    /**
     * 组织边界变动
     */
    private String boundaryChangeDesc;

    /**
     * 排放源列表
     */
    private Map<String, String> emissionSourceMap;

    /**
     * 分类排放量
     */
    Map<String, ReportExportRespVO.EmissionRate> classificationRateMap;

    /**
     * 每种温室气体总排放量
     */
    private List<EmissionRate> gasEmissionTotalList;
    /**
     * 每种温室气体之直接排放
     */
    private List<EmissionRate> gasEmissionScope1List;
    /**
     * 每种温室气体之能源间接排放量
     */
    private List<EmissionRate> gasEmissionScope2List;

    /**
     * 排放源之直接排放
     */
    private List<EmissionGase> emissionGaseScope1List;
    /**
     * 排放源之能源间接排放
     */
    private List<EmissionGase> emissionGaseScope2List;

    /**
     * 排放源数据质量
     */
    private List<EmissionDataQuality> emissionDataQualityList;
    /**
     * 温室气体排放量
     */
    private Double emissionSum;
    /**
     * 加权平均积分
     */
    private Double weightAveScore;
    /**
     * 数据质量等级
     */
    private Integer dataLevel;

    /**
     * 核算周期
     */
    private String accountCycle;
    /**
     * 核算总量
     */
    private Double accountTotal;

    /**
     * 基准年
     */
    private String emissionBasisYear;

    /**
     * 减排场景
     */
    private List<ReductionSceneDO> reductionSceneList;
    /**
     * 减排建议
     */
    private String reductionAdvice;
    /**
     * 同比核算总量
     */
    private Double lastAccountTotal;
    /**
     * 同比降低百分比
     */
    private Double lastAccountRate;

    @Data
    public static class EmissionRate {
        /**
         * 排放量
         */
        private Double emission;

        /**
         * 百分比
         */
        private Double rate;
    }

    @Data
    public static class EmissionGase {
        /**
         * 排放源
         */
        private String name;

        /**
         * 活动/设施
         */
        private String facility;

        /**
         * 合计排放量
         */
        private Double total;

        /**
         * CO2
         */
        private Double co2;

        /**
         * CH4
         */
        private Double ch4;

        /**
         * N20
         */
        private Double n2o;

        /**
         * HFCS
         */
        private Double hfcs;
        /**
         * PFCS
         */
        private Double pfcs;

        /**
         * SF6
         */
        private Double sf6;

        /**
         * NF3
         */
        private Double nf3;

    }

    @Data
    public static class EmissionDataQuality {

        /**
         * 活动资料名称
         */
        private String name;

        /**
         * AD积分
         */
        private Integer adScore;

        /**
         * EF积分
         */
        private Integer efScore;

        /**
         * 平均积分
         */
        private Double avgScore;

        /**
         * 数据级别
         */
        private Integer level;

        /**
         * 排放量
         */
        private Double emission;

        /**
         * 排放占比
         */
        private Double emissionRate;

        /**
         * 加权平均积分
         */
        private Double weightAveScore;

    }

}
